<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>示例8</title>
    <script>
        let target1, source1, source2;
        // ------------- 代码 1 基本用法 ------------- 
        target1 = {
            a: 1
        };
        source1 = {
            b: 2
        };
        source2 = {
            c: 3
        };
        // 将 source1 和 source2 合并到 target 中 
        Object.assign(target1, source1, source2);
        console.log(target1); // {a:1, b:2, c:3} 

        // ------------- 代码 2 同名属性处理 ------------- 
        target1 = {
            a: 1,
            b: 1
        };
        source1 = {
            b: 3,
            c: 2
        };
        source2 = {
            c: 4
        };
        Object.assign(target1, source1, source2);
        // 可以看到，后面对象的同名属性值将覆盖前面对象的同名属性值 
        console.log(target1); // {a:1, b:3, c:4} 

        //------------- 代码 3 一个参数不做处理 ------------- 
        target1 = {
            a: 1
        };
        Object.assign(target1)
        console.log(target1);

        //------------- 代码 4 非对象转成对象 ------------- 
        //如果参数不是对象 
        let value = Object.assign(2);
        console.log(value);
        console.log(typeof value);

        //------------- 代码 5 null undefined 作为参数 ------------- 
        //如果参数为 null 或 undefined，或者无参数（相当于 undefined），抛出报错 
        // TypeError: Cannot convert undefined or null to object 
        Object.assign(null);
        Object.assign(undefined);
        Object.assign();
    </script>
</head>

<body></body>

</html>